add some more stamp checks (pointed out by Anders Carlsson)
authorKristian Rietveld <kris@gtk.org>
Tue, 22 Jan 2002 00:21:40 +0000 (00:21 +0000)
committerKristian Rietveld <kristian@src.gnome.org>
Tue, 22 Jan 2002 00:21:40 +0000 (00:21 +0000)
Mon Jan 21 01:21:54 2002  Kristian Rietveld  <kris@gtk.org>

        * gtk/gtktreestore.c: add some more stamp checks (pointed out
        by Anders Carlsson)

        * gtk/gtktreemodelsort.c (gtk_tree_model_sort_insert_value): don't
        assume _row_changed will insert sort (because _row_changed doesn't
        need to follow this signal), so apply insert sort here
        (gtk_tree_model_sort_level_find_insert): header doesn't need to be
        set here, so use a return instead of g_return_val_if_fail.

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtktreemodelsort.c
gtk/gtktreestore.c

index 630283ff9c6d5b0b139ee93756ead2adbe454325..395889468768823f773d4914c455f0541185ccb8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+Mon Jan 21 01:21:54 2002  Kristian Rietveld  <kris@gtk.org>
+
+       * gtk/gtktreestore.c: add some more stamp checks (pointed out
+       by Anders Carlsson)
+
+       * gtk/gtktreemodelsort.c (gtk_tree_model_sort_insert_value): don't
+       assume _row_changed will insert sort (because _row_changed doesn't
+       need to follow this signal), so apply insert sort here
+       (gtk_tree_model_sort_level_find_insert): header doesn't need to be
+       set here, so use a return instead of g_return_val_if_fail.
+
 Mon Jan 21 18:28:17 2002  Jonathan Blandford  <jrb@redhat.com>
 
        * gtk/gtktreeview.c (gtk_tree_view_adjustment_changed): Update
index 630283ff9c6d5b0b139ee93756ead2adbe454325..395889468768823f773d4914c455f0541185ccb8 100644 (file)
@@ -1,3 +1,14 @@
+Mon Jan 21 01:21:54 2002  Kristian Rietveld  <kris@gtk.org>
+
+       * gtk/gtktreestore.c: add some more stamp checks (pointed out
+       by Anders Carlsson)
+
+       * gtk/gtktreemodelsort.c (gtk_tree_model_sort_insert_value): don't
+       assume _row_changed will insert sort (because _row_changed doesn't
+       need to follow this signal), so apply insert sort here
+       (gtk_tree_model_sort_level_find_insert): header doesn't need to be
+       set here, so use a return instead of g_return_val_if_fail.
+
 Mon Jan 21 18:28:17 2002  Jonathan Blandford  <jrb@redhat.com>
 
        * gtk/gtktreeview.c (gtk_tree_view_adjustment_changed): Update
index 630283ff9c6d5b0b139ee93756ead2adbe454325..395889468768823f773d4914c455f0541185ccb8 100644 (file)
@@ -1,3 +1,14 @@
+Mon Jan 21 01:21:54 2002  Kristian Rietveld  <kris@gtk.org>
+
+       * gtk/gtktreestore.c: add some more stamp checks (pointed out
+       by Anders Carlsson)
+
+       * gtk/gtktreemodelsort.c (gtk_tree_model_sort_insert_value): don't
+       assume _row_changed will insert sort (because _row_changed doesn't
+       need to follow this signal), so apply insert sort here
+       (gtk_tree_model_sort_level_find_insert): header doesn't need to be
+       set here, so use a return instead of g_return_val_if_fail.
+
 Mon Jan 21 18:28:17 2002  Jonathan Blandford  <jrb@redhat.com>
 
        * gtk/gtktreeview.c (gtk_tree_view_adjustment_changed): Update
index 630283ff9c6d5b0b139ee93756ead2adbe454325..395889468768823f773d4914c455f0541185ccb8 100644 (file)
@@ -1,3 +1,14 @@
+Mon Jan 21 01:21:54 2002  Kristian Rietveld  <kris@gtk.org>
+
+       * gtk/gtktreestore.c: add some more stamp checks (pointed out
+       by Anders Carlsson)
+
+       * gtk/gtktreemodelsort.c (gtk_tree_model_sort_insert_value): don't
+       assume _row_changed will insert sort (because _row_changed doesn't
+       need to follow this signal), so apply insert sort here
+       (gtk_tree_model_sort_level_find_insert): header doesn't need to be
+       set here, so use a return instead of g_return_val_if_fail.
+
 Mon Jan 21 18:28:17 2002  Jonathan Blandford  <jrb@redhat.com>
 
        * gtk/gtktreeview.c (gtk_tree_view_adjustment_changed): Update
index 630283ff9c6d5b0b139ee93756ead2adbe454325..395889468768823f773d4914c455f0541185ccb8 100644 (file)
@@ -1,3 +1,14 @@
+Mon Jan 21 01:21:54 2002  Kristian Rietveld  <kris@gtk.org>
+
+       * gtk/gtktreestore.c: add some more stamp checks (pointed out
+       by Anders Carlsson)
+
+       * gtk/gtktreemodelsort.c (gtk_tree_model_sort_insert_value): don't
+       assume _row_changed will insert sort (because _row_changed doesn't
+       need to follow this signal), so apply insert sort here
+       (gtk_tree_model_sort_level_find_insert): header doesn't need to be
+       set here, so use a return instead of g_return_val_if_fail.
+
 Mon Jan 21 18:28:17 2002  Jonathan Blandford  <jrb@redhat.com>
 
        * gtk/gtktreeview.c (gtk_tree_view_adjustment_changed): Update
index 630283ff9c6d5b0b139ee93756ead2adbe454325..395889468768823f773d4914c455f0541185ccb8 100644 (file)
@@ -1,3 +1,14 @@
+Mon Jan 21 01:21:54 2002  Kristian Rietveld  <kris@gtk.org>
+
+       * gtk/gtktreestore.c: add some more stamp checks (pointed out
+       by Anders Carlsson)
+
+       * gtk/gtktreemodelsort.c (gtk_tree_model_sort_insert_value): don't
+       assume _row_changed will insert sort (because _row_changed doesn't
+       need to follow this signal), so apply insert sort here
+       (gtk_tree_model_sort_level_find_insert): header doesn't need to be
+       set here, so use a return instead of g_return_val_if_fail.
+
 Mon Jan 21 18:28:17 2002  Jonathan Blandford  <jrb@redhat.com>
 
        * gtk/gtktreeview.c (gtk_tree_view_adjustment_changed): Update
index 630283ff9c6d5b0b139ee93756ead2adbe454325..395889468768823f773d4914c455f0541185ccb8 100644 (file)
@@ -1,3 +1,14 @@
+Mon Jan 21 01:21:54 2002  Kristian Rietveld  <kris@gtk.org>
+
+       * gtk/gtktreestore.c: add some more stamp checks (pointed out
+       by Anders Carlsson)
+
+       * gtk/gtktreemodelsort.c (gtk_tree_model_sort_insert_value): don't
+       assume _row_changed will insert sort (because _row_changed doesn't
+       need to follow this signal), so apply insert sort here
+       (gtk_tree_model_sort_level_find_insert): header doesn't need to be
+       set here, so use a return instead of g_return_val_if_fail.
+
 Mon Jan 21 18:28:17 2002  Jonathan Blandford  <jrb@redhat.com>
 
        * gtk/gtktreeview.c (gtk_tree_view_adjustment_changed): Update
index 80243090ef902d543cc5541103f83fdf6f28a3b4..ca3cc72b71260821336b5c41a271694443a580fd 100644 (file)
@@ -1581,7 +1581,9 @@ gtk_tree_model_sort_level_find_insert (GtkTreeModelSort *tree_model_sort,
     header = _gtk_tree_data_list_get_header (tree_model_sort->sort_list,
                                             tree_model_sort->sort_column_id);
 
-    g_return_val_if_fail (header != NULL, 0);
+    if (!header)
+      return 0;
+
     g_return_val_if_fail (header->func != NULL, 0);
 
     func = header->func;
@@ -1634,11 +1636,10 @@ gtk_tree_model_sort_insert_value (GtkTreeModelSort *tree_model_sort,
   elt.ref_count = 0;
   elt.children = NULL;
 
-  /* just insert it here, the ::row_changed signal will put the model
-   * back in a nice sort order
-   */
+  index = gtk_tree_model_sort_level_find_insert (tree_model_sort,
+                                                 level, s_iter,
+                                                 FALSE);
 
-  index = gtk_tree_path_get_indices (s_path)[gtk_tree_path_get_depth (s_path)-1];
   g_array_insert_vals (level->array, index, &elt, 1);
 
   /* update all larger offsets */
index 751850aab7e0630e1d3a3e6e03397b609968cb7c..3f08955325c093cfb02efe2d2ebd77f246242b86 100644 (file)
@@ -612,6 +612,7 @@ gtk_tree_store_get_value (GtkTreeModel *tree_model,
 
   g_return_if_fail (GTK_IS_TREE_STORE (tree_model));
   g_return_if_fail (iter != NULL);
+  g_return_if_fail (iter->stamp == GTK_TREE_STORE (tree_model)->stamp);
   g_return_if_fail (column < GTK_TREE_STORE (tree_model)->n_columns);
 
   list = G_NODE (iter->user_data)->data;
@@ -636,7 +637,9 @@ static gboolean
 gtk_tree_store_iter_next (GtkTreeModel  *tree_model,
                          GtkTreeIter   *iter)
 {
+  g_return_val_if_fail (iter != NULL, FALSE);
   g_return_val_if_fail (iter->user_data != NULL, FALSE);
+  g_return_val_if_fail (iter->stamp == GTK_TREE_STORE (tree_model)->stamp, FALSE);
 
   if (G_NODE (iter->user_data)->next)
     {
@@ -655,6 +658,7 @@ gtk_tree_store_iter_children (GtkTreeModel *tree_model,
   GNode *children;
 
   g_return_val_if_fail (parent == NULL || parent->user_data != NULL, FALSE);
+  g_return_val_if_fail (parent->stamp == GTK_TREE_STORE (tree_model)->stamp, FALSE);
 
   if (parent)
     children = G_NODE (parent->user_data)->children;
@@ -743,7 +747,9 @@ gtk_tree_store_iter_parent (GtkTreeModel *tree_model,
   GNode *parent;
 
   g_return_val_if_fail (iter != NULL, FALSE);
-  g_return_val_if_fail (iter->user_data != NULL, FALSE);
+  g_return_val_if_fail (child != NULL, FALSE);
+  g_return_val_if_fail (child->user_data != NULL, FALSE);
+  g_return_val_if_fail (child->stamp == GTK_TREE_STORE (tree_model)->stamp, FALSE);
 
   parent = G_NODE (child->user_data)->parent;
 
@@ -1265,7 +1271,7 @@ gtk_tree_store_prepend (GtkTreeStore *tree_store,
       iter->stamp = tree_store->stamp;
       iter->user_data = g_node_new (NULL);
 
-      g_node_prepend (parent_node, iter->user_data);
+      g_node_prepend (parent_node, G_NODE (iter->user_data));
 
       path = gtk_tree_store_get_path (GTK_TREE_MODEL (tree_store), iter);
       gtk_tree_model_row_inserted (GTK_TREE_MODEL (tree_store), path, iter);